//--------------------------------------------
//  Author        : Santosh Poojari
//  Created Date  : 22/02/2008
//  Email ID      : santosh.poojari@gmail.com
//--------------------------------------------

#region References
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
using Project.Practice.MVP.Services;
using Project.Practice.MVP.ExceptionHandling.CustomException;
#endregion

namespace Project.Practice.MVP.Presenter
{
    /// <summary>
    /// 
    /// every tier has its feature method and ProcessDataAccessLayerException()
    ///
    /// try
    /// {
    ///      feature method
    /// }
    /// catch(Exceptiion ex)
    /// {
    ///     ProcessDataAccessLayerException(ex);
    /// }
    /// </summary>
    public class BasePresenter
    {
        public IServicesProvider m_Service = null;
        public BasePresenter()
        {
            m_Service = new Services.ServicesProvider();
        }
      
        public void ProcessPresenterLayerException(Exception ex)
        {
            bool reThrow = false;
            if (ex.GetType().Equals(typeof(CriticalException)))
            {
                reThrow = ExceptionPolicy.HandleException(ex, "Propogate Policy");
                if (reThrow)
                {
                    throw ex;
                }
            }
            else if (ex.GetType().Equals(typeof(ViewLayerException)))
            {
                reThrow = ExceptionPolicy.HandleException(ex, "Propogate Policy");
                if (reThrow)
                {
                    throw ex;
                }
            }
            else if (ex.GetType().Equals(typeof(DataAccesLayerException)) == true)
            {
                reThrow = ExceptionPolicy.HandleException(ex, "Propogate Policy");
                if (reThrow)
                {
                    throw ex;
                }
            }
            else if (ex.GetType().Equals(typeof(SQLDALException)) == true)
            {
                reThrow = ExceptionPolicy.HandleException(ex, "Propogate Policy");
                if (reThrow)
                {
                    throw ex;
                }
            }
            else
            {
                reThrow = ExceptionPolicy.HandleException(ex, "Presenter Layer Policy");
                if (reThrow)
                {
                    throw ex;
                }
            }
        } 

    }
}
